gsk: Rename uniforms and attributes in shaders
authorEmmanuele Bassi <ebassi@gnome.org>
Thu, 21 Jul 2016 16:17:49 +0000 (17:17 +0100)
committerEmmanuele Bassi <ebassi@gnome.org>
Tue, 18 Oct 2016 10:49:09 +0000 (11:49 +0100)
Use appropriate names, and annotate the names with the types — 'u' for
uniforms, 'a' for attributes. The common preambles for shaders are split
from the bodies, so we need some way to distinguish the uniforms and the
attributes just from their name.

gsk/gskglrenderer.c
gsk/resources/glsl/blend.fs.glsl
gsk/resources/glsl/blend.vs.glsl
gsk/resources/glsl/blit.fs.glsl
gsk/resources/glsl/blit.vs.glsl
gsk/resources/glsl/es2_common.fs.glsl
gsk/resources/glsl/es2_common.vs.glsl
gsk/resources/glsl/gl3_common.fs.glsl
gsk/resources/glsl/gl3_common.vs.glsl
gsk/resources/glsl/gl_common.fs.glsl
gsk/resources/glsl/gl_common.vs.glsl

index ac156caf8390df445be3e65acb011a9a8689f19e..0c119000d2bacd2dea24d949ab5bab4985aed5cf 100644 (file)
 #define SHADER_VERSION_GL3              150
 
 typedef struct {
+  int render_target_id;
   int vao_id;
   int buffer_id;
   int texture_id;
   int program_id;
 
   int mvp_location;
-  int map_location;
-  int parentMap_location;
+  int source_location;
+  int mask_location;
   int uv_location;
   int position_location;
   int alpha_location;
@@ -59,8 +60,8 @@ typedef struct {
 
 enum {
   MVP,
-  MAP,
-  PARENT_MAP,
+  SOURCE,
+  MASK,
   ALPHA,
   BLEND_MODE,
   N_UNIFORMS
@@ -176,14 +177,14 @@ gsk_gl_renderer_create_programs (GskGLRenderer *self)
 
   gsk_shader_builder_set_resource_base_path (builder, "/org/gtk/libgsk/glsl");
 
-  self->uniforms[MVP] = gsk_shader_builder_add_uniform (builder, "mvp");
-  self->uniforms[MAP] = gsk_shader_builder_add_uniform (builder, "map");
-  self->uniforms[PARENT_MAP] = gsk_shader_builder_add_uniform (builder, "parentMap");
-  self->uniforms[ALPHA] = gsk_shader_builder_add_uniform (builder, "alpha");
-  self->uniforms[BLEND_MODE] = gsk_shader_builder_add_uniform (builder, "blendMode");
+  self->uniforms[MVP] = gsk_shader_builder_add_uniform (builder, "uMVP");
+  self->uniforms[SOURCE] = gsk_shader_builder_add_uniform (builder, "uSource");
+  self->uniforms[MASK] = gsk_shader_builder_add_uniform (builder, "uMask");
+  self->uniforms[ALPHA] = gsk_shader_builder_add_uniform (builder, "uAlpha");
+  self->uniforms[BLEND_MODE] = gsk_shader_builder_add_uniform (builder, "uBlendMode");
   
-  self->attributes[POSITION] = gsk_shader_builder_add_attribute (builder, "position");
-  self->attributes[UV] = gsk_shader_builder_add_attribute (builder, "uv");
+  self->attributes[POSITION] = gsk_shader_builder_add_attribute (builder, "aPosition");
+  self->attributes[UV] = gsk_shader_builder_add_attribute (builder, "aUv");
 
   if (gdk_gl_context_get_use_es (self->context))
     {
@@ -363,7 +364,7 @@ render_item (GskGLRenderer *self,
   glUseProgram (item->render_data.program_id);
 
   /* Use texture unit 0 for the source */
-  glUniform1i (item->render_data.map_location, 0);
+  glUniform1i (item->render_data.source_location, 0);
   gsk_gl_driver_bind_source_texture (self->gl_driver, item->render_data.texture_id);
 
   if (item->parent_data != NULL)
@@ -372,7 +373,10 @@ render_item (GskGLRenderer *self,
 
       /* Use texture unit 1 for the mask */
       if (item->parent_data->texture_id != 0)
-        gsk_gl_driver_bind_mask_texture (self->gl_driver, item->parent_data->texture_id);
+        {
+          glUniform1i (item->render_data.mask_location, 1);
+          gsk_gl_driver_bind_mask_texture (self->gl_driver, item->parent_data->texture_id);
+        }
     }
 
   /* Pass the opacity component */
@@ -528,10 +532,10 @@ gsk_gl_renderer_add_render_item (GskGLRenderer *self,
   item.render_data.program_id = program_id;
 
   /* Retrieve all the uniforms and attributes */
-  item.render_data.map_location =
-    gsk_shader_builder_get_uniform_location (self->shader_builder, program_id, self->uniforms[MAP]);
-  item.render_data.parentMap_location =
-    gsk_shader_builder_get_uniform_location (self->shader_builder, program_id, self->uniforms[PARENT_MAP]);
+  item.render_data.source_location =
+    gsk_shader_builder_get_uniform_location (self->shader_builder, program_id, self->uniforms[SOURCE]);
+  item.render_data.mask_location =
+    gsk_shader_builder_get_uniform_location (self->shader_builder, program_id, self->uniforms[MASK]);
   item.render_data.mvp_location =
     gsk_shader_builder_get_uniform_location (self->shader_builder, program_id, self->uniforms[MVP]);
   item.render_data.alpha_location =
index cf1c256f2e230d45b14396b6998826fc0069fe5c..102950b00de1a4e216267953b31188776446a89a 100644 (file)
@@ -28,29 +28,29 @@ vec3 BlendLighten(vec3 Cb, vec3 Cs) {
 }
 
 void main() {
-  vec4 Cb = Texture(parentMap, vUv);
-  vec4 Cs = Texture(map, vUv);
+  vec4 Cb = Texture(uSource, vUv);
+  vec4 Cs = Texture(uMask, vUv);
   vec3 res;
 
-  if (blendMode == 0) {
+  if (uBlendMode == 0) {
     res = Cs.xyz;
   }
-  else if (blendMode == 1) {
+  else if (uBlendMode == 1) {
     res = BlendMultiply(Cb.xyz, Cs.xyz);
   }
-  else if (blendMode == 2) {
+  else if (uBlendMode == 2) {
     res = BlendScreen(Cb.xyz, Cs.xyz);
   }
-  else if (blendMode == 3) {
+  else if (uBlendMode == 3) {
     res = BlendOverlay(Cb.xyz, Cs.xyz);
   }
-  else if (blendMode == 4) {
+  else if (uBlendMode == 4) {
     res = BlendDarken(Cb.xyz, Cs.xyz);
   }
-  else if (blendMode == 5) {
+  else if (uBlendMode == 5) {
     res = BlendLighten(Cb.xyz, Cs.xyz);
   }
-  else if (blendMode == 8) {
+  else if (uBlendMode == 8) {
     res = BlendHardLight(Cb.xyz, Cs.xyz);
   }
   else {
@@ -58,5 +58,5 @@ void main() {
     res = vec3(1.0, 0.0, 0.0);
   }
 
-  setOutputColor(vec4(res, Cs.a * alpha));
+  setOutputColor(vec4(res, Cs.a * uAlpha));
 }
index e74a47c2fcef58da7eab6b98da68800814b17326..b947a7a9b5a5cbb0b4450626282eafded5ae2b63 100644 (file)
@@ -1,6 +1,6 @@
 void main() {
-  gl_Position = mvp * vec4(position, 0.0, 1.0);
+  gl_Position = uMVP * vec4(aPosition, 0.0, 1.0);
 
   // Flip the sampling
-  vUv = vec2(uv.x, 1.0 - uv.y);
+  vUv = vec2(aUv.x, 1.0 - aUv.y);
 }
index 8d2625e5067e09ce9770dc748a637a673d4dc764..ceb88ef50a77d1bb03df196cbdbf0be09a645084 100644 (file)
@@ -1,5 +1,5 @@
 void main() {
-  vec4 diffuse = Texture(map, vUv);
+  vec4 diffuse = Texture(uSource, vUv);
 
-  setOutputColor(vec4(diffuse.xyz, diffuse.a * alpha));
+  setOutputColor(vec4(diffuse.xyz, diffuse.a * uAlpha));
 }
index e74a47c2fcef58da7eab6b98da68800814b17326..b947a7a9b5a5cbb0b4450626282eafded5ae2b63 100644 (file)
@@ -1,6 +1,6 @@
 void main() {
-  gl_Position = mvp * vec4(position, 0.0, 1.0);
+  gl_Position = uMVP * vec4(aPosition, 0.0, 1.0);
 
   // Flip the sampling
-  vUv = vec2(uv.x, 1.0 - uv.y);
+  vUv = vec2(aUv.x, 1.0 - aUv.y);
 }
index c09f75e54b1772e7ad8694b09a064adb115eed61..4cbe57783c77c1d3fe68f58f40e84054f752ae76 100644 (file)
@@ -1,9 +1,10 @@
 precision mediump float;
 
-uniform mat4 mvp;
-uniform sampler2D map;
-uniform sampler2D parentMap;
-uniform float alpha;
+uniform mat4 uMVP;
+uniform sampler2D uSource;
+uniform sampler2D uMask;
+uniform float uAlpha;
+uniform int uBlendMode;
 
 varying vec2 vUv;
 
index e52c153575056fc9fa3835e3f0aba3671035ff4c..3db2e4dc070edf1cc6454e34d7a9ca6484692e25 100644 (file)
@@ -1,7 +1,6 @@
-uniform mat4 mvp;
-uniform float alpha;
+uniform mat4 uMVP;
 
-attribute vec2 position;
-attribute vec2 uv;
+attribute vec2 aPosition;
+attribute vec2 aUv;
 
 varying vec2 vUv;
index 48134a3d8bfb7c6e336f607719de6498c729c5ef..50f72f5ba147a465dc82ff78f2b5a3749d934170 100644 (file)
@@ -1,10 +1,10 @@
 precision highp float;
 
-uniform sampler2D map;
-uniform sampler2D parentMap;
-uniform mat4 mvp;
-uniform float alpha;
-uniform int blendMode;
+uniform sampler2D uSource;
+uniform sampler2D uMask;
+uniform mat4 uMVP;
+uniform float uAlpha;
+uniform int uBlendMode;
 
 in vec2 vUv;
 
index 96289e6d94e191986c815a2a5b6ed33efaab9969..b90c2fea4e2414c3165bdae8a6d0073742b341ff 100644 (file)
@@ -1,7 +1,6 @@
-uniform mat4 mvp;
-uniform float alpha;
+uniform mat4 uMVP;
 
-in vec2 position;
-in vec2 uv;
+in vec2 aPosition;
+in vec2 aUv;
 
 out vec2 vUv;
index e9cfa44006759bfc0ba24fc480aa11994fee18b3..2ed6c75d23a90a7aa3f392b76a0926af710c8e7d 100644 (file)
@@ -1,7 +1,8 @@
-uniform mat4 mvp;
-uniform sampler2D map;
-uniform sampler2D parentMap;
-uniform float alpha;
+uniform mat4 uMVP;
+uniform sampler2D uSource;
+uniform sampler2D uMask;
+uniform float uAlpha;
+uniform int uBlendMode;
 
 varying vec2 vUv;
 
index e52c153575056fc9fa3835e3f0aba3671035ff4c..3db2e4dc070edf1cc6454e34d7a9ca6484692e25 100644 (file)
@@ -1,7 +1,6 @@
-uniform mat4 mvp;
-uniform float alpha;
+uniform mat4 uMVP;
 
-attribute vec2 position;
-attribute vec2 uv;
+attribute vec2 aPosition;
+attribute vec2 aUv;
 
 varying vec2 vUv;